Networks are widely used for rapid and flexible intercommunication between devices of many types. Some networks, such as a “local area network” (LAN) or even the internet, provide data communication between computers and computer peripherals, including laptop computers, desktop computers, PDA's, smart phones, printers, scanners, and such like. Other networks provide voice and/or video communication, such as an office telephone system or even the “publically switched telephone network” (PSTN). Some networks provide macroscopic interconnection between physically separated devices, while other networks are entirely contained within a single device or chip, and are used to interconnect resources such as CPU “cores” and “digital signal processors” within the chip.
Network architectures vary widely in their designs, depending on the requirements of each specific type of network. In some networks, such as in a typical home or office LAN, the interconnected devices or “nodes” transmit data only sporadically, in relatively small quantities, and delivery of the data is not time critical. In other networks, such as in most telephone systems, nodes pair with each other and transmit large amounts of time-critical data in streams.
Networks which transmit mainly time-uncritical data typically use a “packet-switched” architecture, in which the individual data “packets” include routing information or “headers” which indicate their intended destinations. As each packet flows through the routing and switching devices of the network (herein referred to generically as “switches”), the headers are read and decoded by each switch, and the packets are routed accordingly. In this way, all packets and all nodes have equal access to the network at all times, providing maximum flexibility.
Networks which transmit mainly streams of time-critical data, such as voice or video, between pairs of nodes often use a “circuit-switched” architecture, whereby the switches of the network are controlled and configured by a separate network switch controller that configures dedicated routing paths or “circuits” between pairs of nodes over which the time-critical data can be passed in predictable and reliable streams. Once a circuit is established by the controller between a pair of nodes, the individual packets stream through the switches without any need for the switches to read and interpret individual packet headers. In this way, the data is transmitted with optimal speed, reliability, and predictability.
If a packet-switched network attempts to transmit time-critical streams of data (as in e.g. “voice-over-IP” or VoIP applications), unwanted delays (sometimes called “latency”) and loss of data (“drop-outs”) can occur due to packet collisions and due to the high overhead caused by requiring the switches to read each packet header and react accordingly. Of course, applications such as VoIP can be made to work by various software and hardware adaptations, and by sheer network speed and capacity. Nevertheless, a packet-switched network is not ideal for transmitting time-critical streams of data between associated pairs of nodes.
If a circuit-switched network attempts to transmit time-uncritical data between a plurality of un-paired nodes, the result is often an excessive burden placed on the network controller(s) to rapidly and frequently reconfigure the switches as needed. Since the number of switch controllers in a circuit-switched network is typically much less than the number of switches, this can lead to a significant bottleneck and possible delays and dropped packets as the limited number of controllers attempts to keep up with the demand for switch reconfiguration. In addition, circuit-switched networks are typically not ideal for multi-cast network communications, in which a single transmitting node sends packets simultaneously to a plurality of receiving nodes.
As network-dependent systems and devices have evolved and have grown in size and complexity, it has become more and more critical to use network resources as efficiently as possible. For large networks, such as a company-wide LAN, hardware and maintenance costs are increasingly significant factors, and yet such networks are often required to support both data and voice communication.
For individual, highly integrated computing devices, such as PDA's, smart phones, and other so-called “hand-held” computing devices, there has been an even greater convergence of functionality, whereby a single device is required to perform many diverse tasks in parallel, and to function at some times mainly as a telephone, at other times mainly as a data device, and at still other times as both a voice and a data device simultaneously.
Due to size, cost, and heat considerations, it is typically impractical to include redundant packet-switched and circuit-switched networks in a single LAN or on a single hand-held device so as to optimally meet frequently changing operational requirements. Instead, compromises in performance typically must be accepted so that a single internal network can be used to support an ever wider range of applications.
What is needed, therefore, is a network architecture that can provide optimized and efficient support for both time-critical streams of data between paired nodes and time uncritical communication between a plurality of unpaired nodes, whereby the network architecture can be flexibly and dynamically reconfigured as the requirements for different types of communication over the same network vary during usage.